// 枚举 (Enum)    1.一组数值取更好理解的名字 2. 固定的值，不会出现超出范围的可能性

export {}  // 确保跟其他示例没有成员冲突

// 使用对象模拟枚举
// const PostStatue = {
//     Draft: 0,
//     Unpublished: 1,
//     Published: 2
// }

// TS有专门的枚举类型
// enum PostStatus {
//     // 此处使用的是等号
//     Draft = 0,
//     Unpublished = 1,
//     Published = 2 
// }

// 若确定不会使用索引器方式访问枚举 建议使用常量枚举
const enum PostStatus {
    // 不指定则从0开始累加  指定则从指定值开始累加
    Draft ,
    Unpublished ,
    Published 
}


//  enum PostStatus {
//     // 字符串枚举不能自累加 因此每个值都要初始化
//     Draft = 'aaa',
//     Unpublished = 'bbb',
//     Published = 'ccc'
// }


const post = {
    title: 'Hello TypeScripy',
    content: 'TypeScript is a typed superset of JavaScript',
    // 0-草稿 1-未发布 2-已发布  枚举类型会影响编译结果 
    status: PostStatus.Draft  // 0
} 

// PostStatus[0] // => Draft

// 枚举会变成一个双向的键值对 对象 不会被销毁